import { DevPortalLayout, ApiEndpoint, CodeBlock, ParameterTable, InfoBox } from '@/components/DevPortalLayout' export default function DsfaApiPage() { return (

Übersicht

Die DSFA API ermöglicht die vollständige Verwaltung von Datenschutz-Folgenabschätzungen gemäß Art. 35 DSGVO. Alle DSFAs werden backend-persistent gespeichert und mit vollständigem Audit-Trail protokolliert.

Eine DSFA ist zwingend erforderlich bei voraussichtlich hohem Risiko für Betroffene: automatisierte Entscheidungen / Profiling, umfangreiche Verarbeitung sensibler Daten, systematische Überwachung öffentlicher Bereiche oder KI-Hochrisiko-Systeme (EU AI Act). Alle Endpoints akzeptieren tenant_id als Query-Parameter. Ohne Angabe wird default als Tenant-ID verwendet. {/* ===================================================================== */} {/* Liste */} {/* ===================================================================== */}

GET /dsfa

Gibt eine gefilterte Liste aller DSFAs für einen Tenant zurück.

Query-Parameter

{`curl -X GET "https://api.breakpilot.io/sdk/v1/dsfa?tenant_id=mein-tenant&status=in-review" \\ -H "Authorization: Bearer YOUR_API_KEY"`} {`[ { "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "tenant_id": "mein-tenant", "title": "DSFA - Bewerber-Management-System", "description": "KI-gestütztes Bewerber-Screening", "status": "in-review", "risk_level": "high", "processing_activity": "Automatisierte Bewertung von Bewerbungen", "data_categories": ["Kontaktdaten", "Beruflicher Werdegang"], "recipients": ["HR-Abteilung"], "measures": ["Verschlüsselung", "Menschliche Prüfung"], "approved_by": null, "approved_at": null, "created_by": "admin", "created_at": "2026-03-04T10:00:00", "updated_at": "2026-03-04T10:00:00" } ]`} {/* ===================================================================== */} {/* Erstellen */} {/* ===================================================================== */}

POST /dsfa

Erstellt eine neue DSFA. Gibt HTTP 201 mit dem erstellten Datensatz zurück.

{`curl -X POST "https://api.breakpilot.io/sdk/v1/dsfa?tenant_id=mein-tenant" \\ -H "Authorization: Bearer YOUR_API_KEY" \\ -H "Content-Type: application/json" \\ -d '{ "title": "DSFA - Video-Überwachung Büro", "description": "Videoüberwachung zu Sicherheitszwecken", "status": "draft", "risk_level": "medium", "processing_activity": "Videoüberwachung im Eingangsbereich", "data_categories": ["Bilddaten", "Bewegungsdaten"], "recipients": ["Sicherheitsdienst"], "measures": ["Löschfristen 72h", "Hinweisschilder", "Zugangsbeschränkung"], "created_by": "dsb@beispiel.de" }'`} {`{ "id": "7b3a1c9d-4e2f-4a8b-9c1d-5f6a7b8c9d0e", "tenant_id": "mein-tenant", "title": "DSFA - Video-Überwachung Büro", "status": "draft", "risk_level": "medium", "data_categories": ["Bilddaten", "Bewegungsdaten"], "measures": ["Löschfristen 72h", "Hinweisschilder", "Zugangsbeschränkung"], "created_at": "2026-03-04T12:00:00", "updated_at": "2026-03-04T12:00:00" }`} status muss einer der Werte draft, in-review,{' '} approved, needs-update sein. risk_level muss low, medium, high{' '} oder critical sein. Ungültige Werte → HTTP 422. {/* ===================================================================== */} {/* Einzeln abrufen */} {/* ===================================================================== */}

GET /dsfa/{'{id}'}

Gibt eine einzelne DSFA anhand ihrer UUID zurück.

{`curl -X GET "https://api.breakpilot.io/sdk/v1/dsfa/7b3a1c9d-4e2f-4a8b-9c1d-5f6a7b8c9d0e?tenant_id=mein-tenant" \\ -H "Authorization: Bearer YOUR_API_KEY"`} {/* ===================================================================== */} {/* Aktualisieren */} {/* ===================================================================== */}

PUT /dsfa/{'{id}'}

Aktualisiert eine DSFA. Alle Felder sind optional (Partial Update mit{' '} exclude_none). Nur gesetzte Felder werden überschrieben.

{`curl -X PUT "https://api.breakpilot.io/sdk/v1/dsfa/7b3a1c9d?tenant_id=mein-tenant" \\ -H "Authorization: Bearer YOUR_API_KEY" \\ -H "Content-Type: application/json" \\ -d '{ "measures": ["Löschfristen 72h", "Hinweisschilder", "Biometrischer Zugang"], "risk_level": "high" }'`} {/* ===================================================================== */} {/* Status-Wechsel */} {/* ===================================================================== */}

PATCH /dsfa/{'{id}'}/status

Schnell-Statuswechsel ohne vollständiges Update. Bei Status{' '} approved wird approved_at automatisch gesetzt.

Request Body

{`curl -X PATCH "https://api.breakpilot.io/sdk/v1/dsfa/7b3a1c9d/status?tenant_id=mein-tenant" \\ -H "Authorization: Bearer YOUR_API_KEY" \\ -H "Content-Type: application/json" \\ -d '{ "status": "approved", "approved_by": "Max Mustermann (DSB)" }'`} {/* ===================================================================== */} {/* Löschen */} {/* ===================================================================== */}

DELETE /dsfa/{'{id}'}

Löscht eine DSFA gemäß Art. 17 DSGVO. Die Löschung wird im Audit-Log protokolliert.

{`curl -X DELETE "https://api.breakpilot.io/sdk/v1/dsfa/7b3a1c9d?tenant_id=mein-tenant" \\ -H "Authorization: Bearer YOUR_API_KEY"`} {`{ "success": true, "message": "DSFA 7b3a1c9d gelöscht" }`} {/* ===================================================================== */} {/* Statistiken */} {/* ===================================================================== */}

GET /dsfa/stats

Gibt Zähler nach Status und Risiko-Level zurück.

{`curl -X GET "https://api.breakpilot.io/sdk/v1/dsfa/stats?tenant_id=mein-tenant" \\ -H "Authorization: Bearer YOUR_API_KEY"`} {`{ "total": 5, "by_status": { "draft": 2, "in-review": 1, "approved": 2 }, "by_risk_level": { "low": 1, "medium": 2, "high": 2 }, "draft_count": 2, "in_review_count": 1, "approved_count": 2, "needs_update_count": 0 }`} {/* ===================================================================== */} {/* Audit-Log */} {/* ===================================================================== */}

GET /dsfa/audit-log

Gibt den vollständigen Audit-Trail aller DSFA-Aktionen zurück.

Query-Parameter

{`[ { "id": "uuid", "tenant_id": "mein-tenant", "dsfa_id": "7b3a1c9d-...", "action": "STATUS_CHANGE", "changed_by": "system", "old_values": { "status": "in-review" }, "new_values": { "status": "approved" }, "created_at": "2026-03-04T12:30:00" } ]`} Folgende Aktionen werden protokolliert:{' '} CREATE, UPDATE, DELETE, STATUS_CHANGE. {/* ===================================================================== */} {/* Alle Endpoints */} {/* ===================================================================== */}

Alle Endpoints im Überblick

{/* Section 8: AI Use Case Modules */}

Section 8: KI-Anwendungsfälle

Section 8 ist ein optionaler modularer Anhang zur DSFA für KI-spezifische Verarbeitungen. Die Module werden im Feld ai_use_case_modules (JSONB-Array) gespeichert und über den normalen PUT /dsfa/{'{id}'} Endpoint aktualisiert.

Unterstützte Typen: chatbot_nlp, recommendation,{' '} adm_scoring, video_image, biometrics,{' '} iot_sensors, generative_ai, custom

KI-Modul hinzufügen

{`# KI-Modul zu bestehender DSFA hinzufügen curl -sk -X PUT 'https://macmini:8002/api/v1/dsfa/{id}' \\ -H 'Content-Type: application/json' \\ -H 'X-Tenant-ID: default' \\ -d '{ "ai_use_case_modules": [ { "id": "uuid-generated", "use_case_type": "generative_ai", "name": "GPT-Assistent Kundenservice", "model_description": "LLM-basierter Chatbot mit RAG für FAQ-Beantwortung", "model_type": "GPT-4o", "provider": "OpenAI", "third_country_transfer": true, "provider_country": "USA", "input_data_categories": ["Anfragetexte", "Kundennummer"], "output_data_categories": ["Antworttext"], "involves_special_categories": false, "data_subjects": ["Kunden"], "processing_purpose": "Automatisierte Beantwortung von Kundenanfragen", "legal_basis": "Art. 6 Abs. 1 lit. b DSGVO (Vertragserfüllung)", "art22_assessment": { "applies": false, "safeguards": [] }, "risk_criteria": [ { "id": "adm_profiling", "applies": false, "severity": "high" } ], "ai_act_risk_class": "limited", "ai_act_justification": "Chatbot mit Transparenzpflicht nach Art. 52 AI Act", "risks": [], "mitigations": [], "privacy_by_design_measures": [ { "category": "data_minimisation", "description": "Nur notwendige Daten", "implemented": true } ], "review_triggers": [ { "type": "model_update", "description": "Bei Modell-Wechsel", "monitoring_interval": "monatlich" } ] } ] }'`}

TypeScript-Typen

{`import type { AIUseCaseModule, AIUseCaseType, AIActRiskClass } from '@breakpilot/compliance-sdk' // Modul erstellen const module: AIUseCaseModule = { id: crypto.randomUUID(), use_case_type: 'generative_ai', name: 'Mein KI-System', model_description: 'Beschreibung...', third_country_transfer: false, input_data_categories: ['Nutzertexte'], output_data_categories: ['Antwort'], involves_special_categories: false, data_subjects: ['Endnutzer'], processing_purpose: 'Kundensupport', legal_basis: 'Art. 6 Abs. 1 lit. b DSGVO', art22_assessment: { applies: false, safeguards: [] }, risk_criteria: [], ai_act_risk_class: 'limited', wp248_criteria_met: ['K4', 'K8'], risks: [], mitigations: [], privacy_by_design_measures: [], review_triggers: [], created_at: new Date().toISOString(), updated_at: new Date().toISOString(), }`}
) }