Ga naar inhoud

AVG & Privacy

Privacy-by-design

qr3.app is vanaf de basis AVG-conform gebouwd:

  • IP-pseudonimisering — IP-adressen worden in de Edge-Worker direct omgezet in HMAC-SHA-256-UTC-dagpseudoniemen. Het oorspronkelijke IP-adres wordt nooit opgeslagen; het pseudoniem blijft een persoonsgegeven.
  • 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-pseudonimisering (Art. 25 AVG)

HTTP-verzoek → Cloudflare Edge Worker
CF-Connecting-IP-header → HMAC-SHA-256(IP_HASH_SALT, doel, UTC-dag, IP)
ip_hash (dagelijks pseudoniem) → D1-database
Het oorspronkelijke IP-adres wordt nooit opgeslagen

IP_HASH_SALT is een langlevend hoofdgeheim; doel en UTC-dag leiden automatisch afzonderlijke dagelijkse pseudoniemen af. Pseudoniemen van verschillende UTC-dagen zijn niet rechtstreeks gelijk, maar de houder van het geheim kan een bekende IP-kandidaat voor een bepaalde dag opnieuw berekenen. Er wordt geen KV-dagzout of handmatige dagelijkse rotatie gebruikt.

Gegevensretentie (geautomatiseerd)

AbonnementRetentie
Alle abonnementen90 dagen

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