Skip to content

Data rights flow

DSGVO Articles 15 (access), 17 (erasure), 20 (portability), and 30 (record of processing) are exercised through the user-facing flows described below. The binding implementation contract lives in spec 12 §6; this page is the operator-readable summary.

RightDSGVO Art.User-facing surfaceSLA
Access — “what do you have on me?”Art. 15Self-service export in account settings (nowyourlink.com/account/data)Self-serve · instant download for 95th-percentile; manual reply ≤ 30 days for anything that needs assembly
Erasure — “delete my account”Art. 17Self-service in account settings, with confirmation step≤ 30 days, subject to §147 AO retention on invoices (see below)
Portability — “give me my data in a portable format”Art. 20Same as Art. 15 export, JSON + CSV bundleSame as Art. 15
Record of processing — “what processors handle my data?”Art. 30Sub-processors and nowyourlink.com/legal/datenschutzStatic

The user can also email privacy@nowyourlink.com directly — this routes to the same operator queue.

§147 AO requires 10-year retention of invoices and Geschäftsbriefe. Erasure therefore:

  • Removes the account row in D1, OAuth bindings, KV session, R2-stored creative.
  • Retains invoices (R2 nyl-invoices-prod with Object Lock, plus hosted_invoice_url pinned in D1 invoices), saga audit trail (saga_runs), and the immutable bids rows for any auction the user participated in. Personally-identifying fields in the retained rows are tokenised — user_id replaced by an opaque tag, name/email/address cleared.

The retention matrix is canonical in spec 12 §4; the per-store TTL plus the daily q-retention worker (packages/legal/retention/) enforce it.

  1. User submits via self-serve or email → request lands in apps/admin queue (sub-system 10).
  2. Admin acknowledges within 72 hours (DSGVO Art. 12(3)).
  3. For Art. 15/20 — packages/legal/data-rights/export.ts assembles the bundle; admin reviews then releases the download link via email.
  4. For Art. 17 — admin confirms account ownership, triggers packages/legal/data-rights/erase.ts, then notifies the user that erasure completed and what was retained per §147 AO.
  5. Audit row written to data_rights_log (D1) — what was requested, what was returned, who actioned it, when.

All Art. 17 erasures must be logged even when they fail or are partial — the log is what evidences compliance during a Datenschutzbehörde audit.