Auskunftsanträge betroffener Personen (DSAR)
Ein Auskunftsantrag betroffener Personen (auch Datenschutzanfrage oder Antrag auf Verbraucherrechte genannt) ist der formelle Mechanismus, mit dem eine Person ihre Rechte an den personenbezogenen Daten ausübt, die Sie über sie halten – das Recht auf Auskunft, Löschung, Berichtigung, Datenübertragbarkeit oder Widerspruch gegen den Verkauf dieser Daten. Die meisten Datenschutzgesetze setzen Ihnen eine feste Antwortfrist (30 Tage nach DSGVO, 45 nach CCPA/CPRA). Orbit bietet Ihnen zwei Eingangswege und eine Erfüllungs-Pipeline:- Operator-gestellter DSAR – Ihr Support- oder Compliance-Team stellt eine Anfrage im Namen eines Kunden über die authentifizierte API oder das Dashboard.
- Öffentliches Self-Service-Portal – die betroffene Person stellt ihre eigene Anfrage über einen öffentlichen, nicht authentifizierten Flow, der ihre Identität mit einem Zwei-Faktor-E-Mail- + SMS-OTP nachweist, bevor irgendetwas eingereiht wird.
https://api.orbit.devotel.io/api/v1/compliance verwurzelt.
Unterstützte Rechtsordnungen und Fristen
Das Feldapplicable_jurisdiction einer Anfrage steuert, welche
gesetzliche Frist Orbits SLA-Tracker anwendet. Operatoren können eine
Anfrage nach dem Eingang neu klassifizieren.
Anfragetypen
request_type beschreibt, was die betroffene Person verlangt. Der
vollständige CCPA/CPRA-Verbensatz steht Operatoren zur Verfügung; das
öffentliche Portal exponiert eine freundlichere Teilmenge, die darauf
abbildet.
Bei CCPA-Auskunftsanfragen können Sie zusätzlich
consumer_categories anhängen – die Kategorien nach CCPA
§1798.100(b), zu denen die betroffene Person fragt: identifiers,
customer_records, protected_classifications, commercial,
biometric, internet_activity, geolocation, sensory,
professional, education, inferences, sensitive_pi.
Operator-gestellte Anfragen
Eine Anfrage erstellen
POST /compliance/dsar – erfordert einen Admin- oder Owner-API-Schlüssel.
Geben Sie mindestens eine Betroffenen-Kennung (contact_id,
subject_email oder subject_phone) sowie die requester_email an,
die die Korrespondenz erhalten soll.
202 Accepted zurück:
Hinweis –applicable_jurisdictionhat nur für Rechte den Standardgdpr, die unter der DSGVO existieren. Die Anfragetypenopt_out_saleundlimit_sensitive_pisind nur unter CCPA/CPRA verfügbar und haben kein DSGVO-Äquivalent, daher müssen Sieapplicable_jurisdictionfür sie explizit aufccpaodercprasetzen. Das Weglassen (oder Beibehalten desgdpr-Standards) wird mit422 VALIDATION_ERRORabgelehnt.
Status-Lebenszyklus
Eine Anfrage durchläuft:received → processing → completed
mit den End-Zweigen failed, expired und cancelled. Der
Verifikations-Unterstatus wird unabhängig verfolgt:
pending → verified (der Worker fährt fort) oder rejected (der
Worker hält an). DSGVO-/Operator-eingereichte Zeilen haben standardmäßig
not_required.
Identität verifizieren oder ablehnen
Anfragen mit höherem Schutzbedarf (Löschung, Opt-out, sensitive Beschränkung) erfordern eine Operator-Entscheidung, bevor die Erfüllung fortgesetzt wird:decision ist verified oder rejected; notes ist optional
(≤ 2048 Zeichen). Gibt den neuen verification_status und
verified_at zurück.
Eine Anfrage widerrufen
POST /compliance/dsar/{id}/cancel zieht eine laufende Anfrage zurück
(DSGVO Art. 7(3)). Funktioniert nur, solange die Anfrage received oder
processing ist; eine abgeschlossene Anfrage gibt 409 Conflict
zurück.
Anfragen auflisten und lesen
GET /compliance/dsar– paginierte Liste. Query:page(≥ 1),page_size(≤ 100, Standard 25) und ein optionalerstatus-Filter.GET /compliance/dsar/{id}– eine Anfrage abrufen. Die Antwort enthält die signierteexport_url(und ihrexport_expires_at), sobald ein Auskunfts-/Portabilitäts-Export erzeugt wurde, sowietables_exportedmit den Zeilenzahlen je Tabelle.
Löschanfragen
Löschungen nach DSGVO Art. 17 werden als eigene Ressource verfolgt, damit Sie prüfen und eingreifen können, bevor Daten vernichtet werden:GET /compliance/dsar/erasure-requests– Liste. Query:status(pending,cancelled,executing,executed,failed) undlimit(≤ 500).POST /compliance/dsar/erasure-requests/{id}/cancel– eine ausstehende Löschung vor ihrer Ausführung abbrechen. Optionalerreason(≤ 500 Zeichen). Gibt409zurück, wenn sie bereits ausgeführt wird oder fertig ist.
SLA-Dashboard
GET /compliance/dsar/sla liefert eine kombinierte Export- +
Löschungs-SLA-Momentaufnahme, damit Sie nie eine gesetzliche Frist
verpassen:
slaDays / 30 multipliziert, sodass
eine Anfrage immer beim selben Anteil ihrer eigenen Frist amber und rot
wird. escalation_due wird 5 Tage vor der gesetzlichen Frist aktiv
(slaDays − 5).
Für DSGVO (sla_days: 30): grün (< 20 Tage verstrichen),
amber (20–25), rot (26–30), rot + Verletzung (> 30);
escalation_due an Tag 25.
Für CCPA/CPRA (sla_days: 45) ergeben dieselben Verhältnisse
grün (< 30), amber (30–38), rot (39–45), rot + Verletzung
(> 45); escalation_due an Tag 40. Lesen Sie die Stufengrenzen immer
gegen die für diese Anfrage zurückgegebenen sla_days, nicht gegen die
festen Zahlen 20/25/30.
Öffentliches Self-Service-Portal
Der öffentliche Flow lässt eine betroffene Person eine Anfrage ohne Konto einreichen. Die Identität wird mit einem Zwei-Faktor-OTP nachgewiesen – einem E-Mail-Code und einem SMS-Code – bevor irgendeine Anfrage eingereiht wird. Die Endpunkte liegen unter/compliance/public/dsar und sind nicht authentifiziert, aber durch
Cloudflare Turnstile, Rate-Limits pro IP und pro Kennung sowie eine
datenschutzwahrende Antwortform abgesichert, die nie verrät, ob ein
E-Mail-/Telefon-Paar zu einem echten Kontakt passt.
SMS-Verifikationscodes werden über den Devotel-Softswitch zugestellt
(der einzige ausgehende SMS-Pfad der Plattform). Es sind Plattform-
OTPs, kein dem Mandanten zu berechnender Verkehr, und sie tragen keine
Persistenz von Zustellquittungen.
Flow-Übersicht
1
Start
POST /compliance/public/dsar/begin mit email, phone (E.164),
request_type (access | delete | portability | opt_out)
und einem Cloudflare-turnstile_token (in Produktion erforderlich).
Gibt eine intransparente claim_id, email_sent: true und
expires_in: 600 zurück. Ein E-Mail-OTP wird sofort versendet.2
E-Mail verifizieren
POST /compliance/public/dsar/verify-email mit claim_id und dem
6-stelligen code. Gibt den Zustand email_verified und den
nächsten Schritt phone_send zurück. Codes laufen nach 10 Minuten
ab; maximal 3 Versuche. POST …/resend-email (mit claim_id +
email) stellt einen neuen Code aus, vorbehaltlich einer
60-Sekunden-Sperre.3
Telefon-Code senden
POST /compliance/public/dsar/send-phone mit claim_id und der
phone, die der beim Start angegebenen entspricht. Sendet ein
SMS-OTP (expires_in: 600). Zwischen Sendungen gilt eine
60-Sekunden-Sperre; ein zu früher erneuter Versuch gibt 429 mit
Retry-After zurück.4
Telefon verifizieren
POST /compliance/public/dsar/verify-phone mit claim_id und dem
6-stelligen code. Gibt den Zustand phone_verified und den
nächsten Schritt submit zurück.5
Einreichen
POST /compliance/public/dsar/submit mit claim_id. Persistiert
eine Audit-Zeile und – nur wenn die verifizierte E-Mail + Telefon zu
einem Kontakt in Ihrem Mandanten passen – reiht einen echten DSAR
ein (vorab mit verification_status: verified markiert, da das OTP
die Identität bereits nachgewiesen hat). Gibt eine reference_id
(z. B. dsar_pub_…) und ein queued-Boolean zurück.Die Identitätsnachweis-Absender konfigurieren
Die beiden OTPs werden von Plattform-Absendern verschickt, die Sie einmal in Ihrer API-Umgebung konfigurieren. Setzen Sie sie, bevor Sie das Portal veröffentlichen – ein nicht gesetzter SMS-Absender ohne Fallback lässt den Telefonschritt fail-closed scheitern.
Wenn
DEVOTEL_DSAR_PROOF_SMS_FROM und DEVOTEL_PLATFORM_DEFAULT_FROM
beide nicht gesetzt sind, scheitert der send-phone-Schritt fail-closed
mit einem 503 – das Portal meldet „vorübergehend nicht verfügbar” und
der Fehler wird unter der Metrik dsar.proof.sms_send_failed emittiert,
sodass er in Ihren Dashboards auftaucht statt den zweiten Faktor still zu
überspringen. Ebenso gibt der E-Mail-Schritt 503 zurück, wenn
DEVOTEL_RESEND_API_KEY nicht gesetzt ist. Konfigurieren Sie beide
Absender, bevor Sie das Portal öffentlich verlinken.
Missbrauchsabwehr
Die Antwortform ist identisch, ob die Kennungen zu einem echten Kontakt
passen oder nicht – das Portal bestätigt oder bestreitet nie, ob jemand
in Ihrer Datenbank ist. Wenn Redis nicht verfügbar ist, öffnen die
Rate-Limit-Gates (fail-open), um die Verfügbarkeit zu erhalten.
Turnstile-Schutz aktivieren
Das Turnstile-Gate wird mit zwei Umgebungsvariablen konfiguriert.Den Portal-Link hosten
Veröffentlichen Sie das öffentliche Portal unter Ihrer Datenschutzerklärung als Link „Datenschutzanfrage einreichen”. Da sich der Flow per OTP selbst verifiziert, sind Anfragen, die darüber eingehen, bereits identitätsgeprüft – sie landen fertig zur Erfüllung in Ihrer Operator-Warteschlange und erscheinen inGET /compliance/dsar
gemeinsam mit Operator-gestellten Anfragen.
Weiterführende Referenzen
- Eine DSGVO-Haltung Ende-zu-Ende zusammenstellen — wo der DSAR-Eingang in der Gesamtabfolge liegt.
- Einwilligungsverwaltung – den Einwilligungsstand erfassen und abfragen, den ein DSAR Sie zu respektieren auffordern kann.
- Opt-out- & Unterdrückungslisten —
wie
delete- /opt_out-Ergebnisse in die Unterdrückung fließen. - Einwilligung zur Anrufaufzeichnung – Umgang mit Aufzeichnungen, auf die sich eine Auskunftsanfrage bezieht.
- API-Referenz → Compliance – vollständige Anfrage-/Antwort-Schemata (aus der Live-API neu generiert).