AVG & Privacy
Privacy-by-design
qr3.app is vanaf de basis AVG-conform gebouwd:
- IP-anonimisering — IP-adressen worden in de Edge-Worker direct omgezet in SHA-256-hashes (met een dagelijks roterende salt). Het originele IP-adres bereikt de database nooit.
- Retentiebeleid — Scangegevens worden automatisch verwijderd na een abonnementafhankelijke termijn (Free: 7 dagen, Pro: 90 dagen, Business: 1 jaar).
- Dataminimalisatie — Alleen de gegevens die noodzakelijk zijn voor de werking worden verzameld.
Privacy-API
Gegevenssamenvatting (Art. 15 AVG)
GET /v1/account/privacy — Retourneert een overzicht van alle opgeslagen gegevens.
curl https://qr3.app/v1/account/privacy \ -H "Authorization: Bearer qr3_sk_..."Response:
{ "data": { "workspace_id": "ws_xxx", "stored_data": { "qr_codes": { "count": 42, "oldest_at": "2026-03-01T..." }, "scan_records": { "count": 15000, "oldest_at": "2026-03-01T..." }, "api_keys": { "count": 2 }, "webhooks": { "count": 1 } }, "your_rights": { "access": "GET /v1/account/export", "erasure": "DELETE /v1/account", }, "data_processing": { "legal_basis": "Contract performance (Art. 6(1)(b) GDPR)", "sub_processors": [ { "name": "Cloudflare, Inc.", "purpose": "CDN, edge computing, database" } ] } }}Gegevensexport (Art. 20 AVG — dataportabiliteit)
GET /v1/account/export — Downloadt alle gegevens als JSON-bestand.
curl https://qr3.app/v1/account/export \ -H "Authorization: Bearer qr3_sk_..." \ -o meine-daten.jsonDe export bevat:
- Alle QR-codes (inclusief verwijderde)
- Geaggregeerde scanstatistieken (geen ruwe IP-hashes)
- Tijdstempels van aanmaak en wijziging
Account verwijderen (Art. 17 AVG — recht om vergeten te worden)
DELETE /v1/account — Onherroepelijke verwijdering van alle gegevens.
curl -X DELETE https://qr3.app/v1/account \ -H "Authorization: Bearer qr3_sk_..."Wat er gebeurt:
- Alle QR-codes worden soft-deleted (gearchiveerd)
- Alle scan-records worden definitief verwijderd (PII)
- Alle API-keys worden ingetrokken
- KV-cache wordt geïnvalideerd
Toestemmingen beheren
GET /v1/account/privacy/consents — Actuele toestemmingen ophalen.
POST /v1/account/privacy/consents — Toestemmingen bijwerken.
# Aktuelle Einwilligungen abrufencurl https://qr3.app/v1/account/privacy/consents \ -H "Authorization: Bearer qr3_sk_..."
# Marketing-E-Mails deaktivierencurl -X POST https://qr3.app/v1/account/privacy/consents \ -H "Authorization: Bearer qr3_sk_..." \ -H "Content-Type: application/json" \ -d '{ "marketing_emails": false, "analytics": true, "product_updates": true }'Toestemmingsvelden:
| Veld | Standaard | Beschrijving |
|---|---|---|
marketing_emails | false | Nieuwsbrieven en marketing-e-mails |
analytics | true | Geaggregeerde gebruiksstatistieken |
product_updates | true | Productupdates en changelogs |
Technische AVG-implementatie
IP-anonimisering (Art. 25 AVG)
HTTP Request → Cloudflare Edge Worker ↓CF-Connecting-IP Header → SHA-256(IP + täglicher Salt) ↓ip_hash (nicht reversibel) → D1 Datenbank ↓Original-IP wird NIEMALS gespeichertDe salt roteert dagelijks om middernacht UTC. Hierdoor is, zelfs als de salt bekend is, geen IP-correlatie over meerdere dagen mogelijk.
Gegevensretentie (geautomatiseerd)
Een dagelijks uitgevoerde cron-job (purgeOldScans) verwijdert scangegevens na een abonnementafhankelijke termijn:
| Abonnement | Retentie |
|---|---|
| Free | 7 dagen |
| Pro | 90 dagen |
| Business / Agency | 1 jaar |
| Enterprise | Custom (SLA) |
Subverwerker-DPA
Cloudflare, Inc. verwerkt gegevens als verwerker. De DPA is beschikbaar op cloudflare.com/cloudflare-customer-dpa.
Cloudflare verwerkt gegevens op EU-servers (Frankfurt). Standard Contractual Clauses (SCC’s) conform Art. 46 AVG zijn van kracht.
Contact
- Functionaris voor gegevensbescherming: [email protected]
- Verwerkersovereenkomst: [email protected] (op aanvraag)
- Privacyverklaring: qr3.app/de/legal/datenschutz