Ga naar inhoud

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.

Terminal window
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",
"contact": "[email protected]"
},
"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.

Terminal window
curl https://qr3.app/v1/account/export \
-H "Authorization: Bearer qr3_sk_..." \
-o meine-daten.json

De 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/accountOnherroepelijke verwijdering van alle gegevens.

Terminal window
curl -X DELETE https://qr3.app/v1/account \
-H "Authorization: Bearer qr3_sk_..."

Wat er gebeurt:

  1. Alle QR-codes worden soft-deleted (gearchiveerd)
  2. Alle scan-records worden definitief verwijderd (PII)
  3. Alle API-keys worden ingetrokken
  4. KV-cache wordt geïnvalideerd

Toestemmingen beheren

GET /v1/account/privacy/consents — Actuele toestemmingen ophalen.

POST /v1/account/privacy/consents — Toestemmingen bijwerken.

Terminal window
# Aktuelle Einwilligungen abrufen
curl https://qr3.app/v1/account/privacy/consents \
-H "Authorization: Bearer qr3_sk_..."
# Marketing-E-Mails deaktivieren
curl -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:

VeldStandaardBeschrijving
marketing_emailsfalseNieuwsbrieven en marketing-e-mails
analyticstrueGeaggregeerde gebruiksstatistieken
product_updatestrueProductupdates 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 gespeichert

De 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:

AbonnementRetentie
Free7 dagen
Pro90 dagen
Business / Agency1 jaar
EnterpriseCustom (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